Host memory interface for a parallel processor

ABSTRACT

A memory interface for a parallel processor which has an array of processing elements and can receive a memory address and supply the memory address to a memory connected to the processing elements. The processing elements transfer data to and from the memory at the memory address. The memory interface can connect to a host configured to access data in a conventional SDRAM memory device so that the host can access data in the memory.

This application is a continuation of U.S. patent application Ser. No.10/395,695, filed Mar. 20, 2003, now U.S. Pat. No. 7,206,909, whichclaims foreign priority from UK Application No. 0221562.2, filed Sep.17, 2002 and UK Application No. 0228438.8, filed Dec. 5, 2002.

FIELD OF THE INVENTION

The present invention relates to accessing data in a parallel processorincluding a memory array. Preferred embodiments of the present inventionrelate to accessing of data stored in memory connected to an array ofprocessing elements in an active memory device by a host configured forconnection with a conventional memory device.

BACKGROUND TO THE INVENTION

A simple computer generally includes a central processing unit CPU and amain memory. The CPU implements a sequence of operations encoded in astored program. The program and data on which the CPU acts is typicallystored in the main memory. The processing of the program and theallocation of main memory and other resources are controlled by anoperating system. In operating systems where multiple applications mayshare and partition resources, the computer's processing performance canbe improved through use of active memory.

Active memory is memory that processes data as well as storing it. Itcan be instructed to operate on its contents without transferring itscontents to the CPU or to any other part of the system. This istypically achieved by distributing parallel processors throughout thememory. Each parallel processor is connected to the memory and operateson the memory independently of the other processing elements. Most ofthe data processing is performed within the active memory and the workof the CPU is thus reduced to the operating system tasks of schedulingprocesses and allocating system resources.

A block of active memory typically consists of the following: a block ofmemory, e.g. dynamic random access memory DRAM, an interconnection blockand a memory processor processing element array. The interconnectionblock provides a path that allows data to flow between the block ofmemory and the processing element array. The processing element arraytypically includes multiple identical processing elements controlled bya sequencer. Processing elements are generally small in area, have a lowdegree of hardware complexity, and are quick to implement, which leadsto increased optimisation. Processing elements are usually designed tobalance performance and cost. A simple more general-purpose processingelement will result in a higher level of performance than a more complexprocessing element because it can be easily coupled to many identicalprocessing elements. Further, because of its simplicity, the processingelement will clock at a faster rate.

In any computer system, it is important that data can be made availableto the processor as quickly as possible. In an active memory device, thecomplexity of the device means that data has to be accessed from thememory via the processing elements. Thus, the speed of access to thememory by a host processor is reduced. In addition, the added complexitythat an active memory device bestows on a computer system means thatadditional complexity is added to the method of accessing data from theactive memory device, which itself imparts additional complexity on thehost processor.

In current systems, due to this additional complexity, a host connectedto an active memory device has to be custom designed specifically forthe active memory device. Thus, hosts configured for connection with onetype of active memory device cannot be used with a different type ofactive memory device. Furthermore, hosts which have been designed forconnection with conventional memory devices, such as standard SDRAMmemories, cannot be connected to active memory devices at all. As such,considerable expense is incurred in the development of computer systemsusing active memory devices, since not only does the active memorydevice have to be designed and built, but also a complete host system tooperate with it. Conventional memory devices are defined as any type ofnon-active memory devices which can be addressed by conventional memorycommand signals conforming to common industry standards.

Accordingly, it is an object of the present invention to provide astandard memory interface for an active memory device which permitsdifferent types of host processors to access the memory in the device.

It is a further object of the present invention to provide a memoryinterface for an active memory device for use with conventional hostprocessors which are configured to connect to standard “non-active”memory devices, such as a standard SDRAM memory module.

SUMMARY OF THE INVENTION

In view of the foregoing and in accordance with one aspect of thepresent invention, there is provided a memory interface for a parallelprocessor having an array of processing elements, the memory interfacebeing adapted to operate as follows:

-   -   to receive memory control signals and memory addresses from a        host;    -   to apply at least a portion of the memory addresses to a memory        connected to the processing elements; and    -   to apply control signals to the processing elements, such that        in response the processing elements transfer data:        -   to and from the memory at the memory address; or        -   to and from the host; or        -   both; and    -   wherein the memory interface is adapted to connect to a host        configured to access data in a conventional memory device, such        that the host can access data in the memory.

The memory control signals and memory addresses may include a rowaddress signal RAS, a row address, a column address signal CAS, a columnaddress and a write enable signal WE.

The present invention further provides a memory interface for a parallelprocessor having an array of processing elements, the memory interfacebeing adapted to operate as follows:

-   -   to receive memory control signals and memory addresses from a        host;    -   to apply at least a portion of the memory addresses to a memory        connected to the processing elements; and    -   to apply control signals to the processing elements, such that        in response the processing elements transfer data:        -   to and from the memory at the memory address; or        -   to and from the host; or        -   both; and    -   wherein the memory control signals and memory addresses include        a row address signal RAS, a row address, a column address signal        CAS, a column address and a write enable signal WE.

Preferably, on receipt of a row address and a first configuration ofmemory control signals including a RAS assertion, the interfaceactivates a page of data by transferring data from the row in the memorycorresponding to the row address, into the processing elements.

Preferably, on receipt of a second configuration of memory commandsignals, the interface deactivates the page of data by transferring datafrom the processing elements into the row in the memory corresponding tothe row address.

Preferably, on receipt of a column address and a third configuration ofmemory command signals including a CAS assertion and a WE assertion, theinterface transfers data from the activated page of data in theprocessing elements to the host, beginning with data from the column inthe memory corresponding to the column address.

Preferably, on receipt of a column address and a fourth configuration ofmemory command signals including a CAS assertion and a WE assertion, theinterface transfers data from the host to the activated page of data inthe processing elements, beginning with data for the column in thememory corresponding to the column address.

The present invention further provides an active memory comprising amemory, an array of processing elements connected to the memory and amemory interface and methods of reading and writing to such a memory.

BRIEF DESCRIPTION OF THE DRAWINGS

A specific embodiment will now be described by way of example only andwith reference to the accompanying drawings, in which:

FIG. 1 shows one embodiment of an active memory block in accordance withthe present invention;

FIG. 2 shows one embodiment of the components of the active memory blockin accordance with the present invention;

FIG. 3 shows one embodiment of control logic in the memory interface;

FIG. 4 shows one embodiment of a processing element in the active memoryblock in accordance with the present invention;

FIGS. 5 a and 5 b show representations of the array of processingelements in accordance with the present invention;

FIGS. 6 a to 6 c show different array address mappings in accordancewith the present invention;

FIGS. 6 d to 6 e show different mappings of bytes within a 32-bit wordstored in host registers in the processing elements in accordance withthe present invention;

FIG. 7 shows a state diagram for a finite state machine in the controllogic in accordance with the present invention.

FIGS. 8-15 are timing diagrams showing the operation of various memorycommands.

DETAILED DESCRIPTION

Referring to FIG. 1, one embodiment of an active memory block inaccordance with the invention is shown. Active memory block 100 includesa memory 106 and an PE array 110 of processing elements (PEs). Memory106 is preferably random access memory (RAM), in particular DRAM. The PEarray 110 communicates with memory 106 via an interconnection block 108.The interconnection block 108 can be any suitable communications path,such as a bi-directional high bandwidth path. A host 102, which in thiscase is a central processing unit CPU, communicates with the PE array110 via memory interface 112. The memory interface 112 furthercommunicates with the memory 106 via a DRAM control unit DCU 114. Thememory interface includes conventional address, data and control lines.

Referring to FIG. 2, the active memory block 100 is shown connected tothe host 102 The active memory block 100 comprises the memory 106, anarray 110 of processing elements and the memory interface 112 havingcontrol logic 204 and a data register 206. The data register 206 isconnected to the host 102 by a first data path 208 which is adapted totransfer high bandwidth data between the host 102 and the data register206. The host 102 supplies a memory address 210 in the conventional way,using row (MSBs) and column (LSBs) addresses and RAS and CAS assertions,and other conventional memory access command signals 212 to the controllogic 204. A READY signal 222 is generated by the control logic 204 andsent back to the host 102 to indicate that further command signals 212can be sent.

The control logic 204 interprets the conventional memory access commandsignals 212 and the memory address 210 and generates an array address214 from the column address of the memory address 210 and array controlsignals 216 which are sent to the PE array 110 and memory controlsignals 218 which are sent to the memory 106 via the DCU 114. Theprocessing elements in the PE array 110 are configured to receive orsend a row of data from or to the row in the memory 106 corresponding tothe row address (MSBs) of the memory address 210. The PE array 110 isconfigured to respond to the array control signals 216 and the arrayaddress 214 to transfer data from the processing elements addressed bythe array address 214. The data is transferred between the memory 106and the PE array 110 via the interconnection block 108 and between thehost 102 and the PE array 110 via the first and second data paths 208,220 which are linked across the data register 206.

The control logic 204 also receives a page command signal 224 from thehost 102 to determine which of two pages of data in the PE array 110 toaddress. The selection of the page is made via the array control signals216.

Referring to FIG. 3, the control logic 204 is shown including an addressregister 302 for receiving the memory address 210 from the host 102, amode register 304 for generating mode signals 312. A finite statemachine FSM 306 receives the command signals 212 from the host 102 andthe mode signals 312 from the mode register 304 and generates the memorycontrol signals 218 and array control signals 216. Address transformlogic 308 generates an array address 214 from the column address (LSBs)of the memory address 210 and sends it to the PE array 110, to addressthe appropriate processing elements in the PE array 110 corresponding tothe array address 214 and the mapping of the addresses to the processingelements, as specified by the mode signals 312.

The contents of a mode register 304 is used to determine the dataordering in the PE array 110 and the memory 106 and sends mode signals312 to the address transform logic 308 and the DCU 114 so that theaddress transform logic 308 can interpret and address the data in the PEarray 110 correctly and the DCU 114 can address the data in the memory106.

Referring to FIG. 4, a processing element 400 in the PE array 110 isshown comprising a DRAM interface 401 for connecting the memory 106 andthe memory interface 112 with the processing element 400. Also includedin the processing element 400 is a register file 406 between the resultpipe 408 and processing logic 410. Data from the memory 106 is sent viathe DRAM interface 401 to be processed in the processing logic 410 andmoved between other processing elements in the PE array 110 via theresult pipe 408. The DRAM interface 401 comprises host registers(H-registers) 402 and DRAM registers 404. The H-registers 402 receivefrom and send data to the memory interface 112 via the second data path220.

The H-registers 402 are arranged in a first bank 451 and a second bank452, each bank corresponding respectively to a first and second page ofdata to be stored in the H-registers 402 of all of the processingelements. The page to be addressed is determined by the page commandsignal 224 which is interpreted by the FSM 306 and sent to the PE array110 with the array control signals 216. Thus, at any given time, twopages of data can be active in the PE array 110.

Every command issued to the interface, by a host processor or externalI/O device is accompanied by a page select. The interface maintains acomplete set of operational parameters for each page (for example theDRAM address used by the ACTIVE command). A page consists of four planesof DRAM bytes in the H-registers in each PE, or 1024 bytes. The data inthe first plane is taken from the DRAM data at the page or row addresssupplied with the ACTIVE command described below. Once a page is held inthe H-registers 402, burst reads and writes can take place as describedbelow. The interface data input and output ports are 32 bits wide, andso the unit of data transfer during bursts is the 32 bit word. Each pagecontains 256 32 bit words, which are addressed with eight address bits.The mapping mode, described below, determines the way that each eightbit address maps to the bytes within the H registers.

The DRAM registers 404 receive data from and send data to the memory 102at the row corresponding to the row address (MSBs) of the memory address120 via the interconnection block 108. The data is received from theDRAM registers 404 and transferred between the memory interface 112 viaone of the banks of H-registers 402, the bank being specified by thearray command signals 212. Each H-register can store one byte (8 bits)of data. Thus, a given processing element 400 can store a 32 bit wordfor each of the two pages.

Referring to FIGS. 5 a, 5 b and 6 a to 6 c, a representation of the PEarray 110 is shown having individual processing elements 400. In FIG. 5b, the first page 500 of data is shown with the H-registers 402 in thefirst bank 451 represented by four layers 501, 502, 503, 504 ofH-registers 402. The second page of data is not shown, but in a similarway to the first page 500 uses four H-registers 402 in the second bank452 and operates in a similar manner to the first page 500 as discussedbelow.

For the first page 500, each layer 501, 502, 503, 504 of H-registerscorresponds to first, second, third or fourth H-registers in eachprocessing element 400. For the PE array 110 shown in FIG. 5 b, whichhas 16 rows and 16 columns, there are 256 processing elements and 1024bytes of data in the first page 500.

FIGS. 6 a to 6 c show different mappings of data in the PE array 110,the type of mapping being set or interpreted by the mode signals 312.The second data path 220 is 32 bits wide, so the corresponding unit ofdata transfer from the H-registers 402 to the data register 206 is a 32bit word. There are 256 processing elements in the PE array 110 andtherefore 256 32 bit words which are addressed by an array address 214which is 8 bits wide.

In FIG. 6 a, 32 bits of data are contained in each processing element601, with 8 bits of data held in each of the four H-registers 402 ineach processing element. This is referred to as ‘word’ mapping and isused for 32 bit processing element operations. Each array addresscorresponds to an entire processing element.

In FIG. 6 b, 2×16 bits of data are contained in each processing element601, 602, with 32 bits of data in total held across two H-registers 402in each of two processing elements 601, 602. This is referred to as‘half-word’ mapping and is used for 16 bit processing elementoperations. Thus, for each processing element, there are two mappedarray addresses, with each array address corresponding to two differentH-registers.

In FIG. 6 c, 4×8 bits of data are contained in each processing element601, 602, 603, 604, with 32 bits of data held across a single H-register402 in each of four processing elements 601, 602, 603, 604. This isreferred to as ‘byte’ mapping and is used for 8 bit processing elementoperations. Thus, for each processing element, there are four mappedarray addresses, with each array address corresponding to a differentH-register.

In addition to the aforementioned mappings of data in the PE array 110,the endianism of the data can be set by the host 102, i.e. the orderingof the bytes in each 32 bit word stored in the H-registers 402. Thereare two different orderings of bytes: big endian and little endian.Routines in the processing elements expect multi-byte words to be storedin the register file in a particular way and by convention big endian isthe normal mode which means that the most significant byte of amulti-byte number is held in the lowest addressed register.

Big endian mode 670 is shown in FIG. 6 d, which shows a lowest addressedregister 671 containing a most significant byte 672 of a 32-bit word anda highest addressed register 673 containing a least significant byte674. Little endian mode 680 is shown in FIG. 6 e, which shows the lowestaddressed register 671 containing the least significant byte 672 of a32-bit word and the highest addressed register 673 containing the mostsignificant byte 674.

The mapping and endian modes are specified by the host issuing a LOADcommand (see below) and placing mode register fields (see Table 1 below)onto the memory address lines. The mode register fields are stored inthe mode register 304 which sends the mode signals 312 to the addresstransform logic 308 so that the address transform logic can interpretthe data in the PE array 110 appropriately.

TABLE 1 Mode register fields Bits Field Comments 0 to 1 Mapping 0: wordmapping 1: half-word mapping 2, 3: byte mapping 2 Endianism 0:big-endian byte mapping 1: little-endian byte mapping

Referring to FIG. 7, a state diagram for the finite state machine FSM306 is shown. As mentioned above, the FSM 306 receives conventionalmemory access command signals 212 from the host 101. The conventionalmemory access commands, which are interpreted by and implemented in theFSM 306 and shown in FIG. 7, are listed in Table 2 below.

TABLE 2 Command Functions and Encoding Command value RAS CAS WE State 71 1 1 NOP 760 6 1 1 0 Burst Terminate 764 5 1 0 1 Read 756 4 1 0 0 Write758 3 0 1 1 Active 754 2 0 1 1 Deactivate 752

In Table 2, the command signals 212 sent by the host 101 are theconventional memory access signals: RAS (Row Address Signal); CAS(Column Access Signal); and WE (Write Enable), which are interpreted bythe FSM 306 as the states listed in Table 2 and shown in FIG. 7.

As can be seen from FIG. 7, the FSM 306 will remain in an idle state 702and an active state 704 indefinitely until a command is issued by thehost 101.

From the idle state 702, before data can be accessed, a page must beactivated using the ACTIVE command 754 (see Table 1) to enter the activestate 704 in which a page of 256 32-bit values has been activated in theH-registers 402 for reading and writing by the host 102. Activationconsists of loading data from the memory 106 into the H-registers 402 ofthe processing elements according to the mapping scheme currently inforce. The ACTIVE command 754 can take a variable amount of time, so aREADY signal 222 signals to the host 102 that the ACTIVE command 754 hascompleted and the active state 704 has been entered. After an ACTIVEcommand 754 has been issued by the host 102, the command inputs will beignored until after the READY signal 222 goes high indicating completionof the ACTIVE command 754. Once a page has been activated it remainsactive until a DEACTIVATE or PRECHARGE command is registered for thatpage.

FIG. 8 is a timing diagram illustrating the operation of the ACTIVEcommand. In FIGS. 8-15, The various signals shown have the followingsignificance.

TABLE 3 Signal Descriptions Signal In/Out Description m_clk Out MemoryPort Timing Reference Clock. m_clk runs at twice the frequency of themaster clock clk_in. Memory port transactions are timed relative to therising edge of m_clk. m_d[32] In/Out Memory interface data. m_a[12] InMemory interface address. m_cmd[3] In Memory interface command. m_pageIn Memory interface page select: selects which page of H registers isactivated by the current command. m_ce In Memory interface enable:transaction only takes place when m_ce is active. m_oe In Memoryinterface output enable: when (1), chip drives m_d out. When (0) m_d ishigh impedance. m_rdy Out Memory interface ready: indicates completionof ACTIVE or DEACTIVATE command. A command should only be issued whenm_rdy is high. After an ACTIVE or DEACTIVATE command is registered, noother commands are registered until the first clock edge after m_rdygoes high signaling completion.

In addition, the timing parameters used in FIGS. 8-15 have the followingsignificance.

TABLE 4 Timing Parameters Timing Description Min (ns) Max (ns) t_(m)_(—) _(CS) Command setup to clock 2.0 t_(m) _(—) _(CH) Command holdafter clock 0.0 t_(m) _(—) _(AS) Address setup to clock 2.0 t_(m) _(—)_(AH) Address hold after clock 0.0 t_(m) _(—) _(DIS) Data in setup toclock 2.0 t_(m) _(—) _(DIH) Data in hold after clock 0.0 t_(m) _(—)_(DOV) Data output, clock to data valid 3.0 6.0 t_(m) _(—) _(DHZ) Dataoutput, m_oe to high Z 3.0 t_(m) _(—) _(DLZ) Data output, m_oe to low Z1.0 4.5 t_(m) _(—) _(RV) m_rdy, clock to valid 3.0 6.0 t_(m) _(—)_(SKEW) m_clk skew vs. clk_in 0 t_(m) _(—) _(CLK) Clock period 15

From the active state 704, upon receipt of the READ command 756 (seeTable 1), the FSM 306 enters a read state 706 in which data istransferred in a burst from the H-registers 402 along the second datapath 220 to the data register 206 and from there to the host 102 alongthe first data path 120. Read accesses to the DRAM are burst-orientated,up to a maximum burst length of 256 32 bit words (a whole page). Thefirst READ or WRITE command, described below, can be registered on theclock edge following the READY signal going high. The array address forbeginning the read burst is taken from bits 7 to 0 (LSBs) of the memoryaddress 210, corresponding to the column address received with the CASassertion. If a read burst runs off the end of the page, then it wrapsaround back to the start of the page and continues automatically. Burstsmay be any length, but if a burst continues for longer than a page ofH-registers, namely 256 transfers, the data will be repeated.

FIG. 10 is a timing diagram illustrating the operation of a single burstREAD command and FIG. 11 is a timing diagram illustrating the operationof the consecutive READ commands, illustrating the termination of priorREAD bursts by subsequent READ commands.

From the active state 704, upon receipt of the WRITE command 758 (seeTable 1), the FSM 306 enters a write state 704 in which data istransferred in a burst from the host 102 to the data register 206 alongthe first data path 120 and from the data register 206 to theH-registers 402 along the second data path 220. Write accesses to theDRAM are burst-orientated, up to a maximum burst length of 256 32 bitwords (a whole page). The array address 214 for beginning the writeburst is taken from bits 7 to 0 (LSBs) of the memory address 210,corresponding to the column address received with the CAS assertion. Ifa write burst runs off the end of the page, then it wraps around back tothe start of the page and continues automatically. Bursts may be anylength, but if a burst continues for longer than a page of H-registers,namely 256 transfers, the written locations will be repeated andoverwritten.

FIG. 12 is a timing diagram illustrating the operation of a single burstWRITE command and FIG. 13 is a timing diagram illustrating the operationof the consecutive WRITE commands, illustrating the termination of priorWRITE bursts by subsequent WRITE commands.

READ and WRITE commands may be interleaved as illustrated in the timingdiagram of FIG. 14. NOP commands may be inserted between consecutiveREAD commands or WRITE commands or interleaved READ and WRITE commandsas illustrated in the timing diagram of FIG. 15, where a single NOP isinserted between the third and fourth WRITE commands to obtain a WRITEburst of 2 32-bit words. In FIG. 15, consecutive WRITE commands areshown addresses to alternate pages by toggling of the m_page signal. Aburst to one page is terminated by any command to the other page.

A burst terminate command 764 (see Table 2) may be issued by the host102 to terminate a data read or write burst and return the FSM 306 tothe active state 704.

From the active, read or write states 702, 704 or 706, upon receipt ofthe DEACTIVATE or PRECHARGE command 752 (see Table 2), a page in theH-registers 402 is deactivated and its contents are returned to thememory 106 at the row corresponding to the row address part of thememory address 210 via the DRAM registers 404. The ACTIVE command cantake a variable amount of time. Again, the READY signal is used tosignal to the host that the DEACTIVATE or PRECHARGE command hascompleted. Thus, after a DEACTIVATE or PRECHARGE command 752 has beenissued by the host 102, the command inputs will be ignored until after aREADY signal 222 is asserted indicating completion of the DEACTIVATE orPRECHARGE command 752. If a page is activated by issuance of an ACTIVEcommand 754 and then no WRITE command 758 is issued, since no data hasbeen written into the PE array 110 by the memory interface 112, theDEACTIVATE or PRECHARGE command 752 terminates immediately taking noaction and asserting the READY signal 222.

FIG. 9 is a timing diagram illustrating the operation of the DEACTIVATEcommand.

The NOP command 760 see Table 2 is used to prevent unwanted commandsfrom being registered during the idle, active, read or write states.Operations that are already in progress are not affected by issuance ofthe NOP command 760 by the host 102.

The LOAD command 762 (see Table 2) is a single-cycle command that can beissued at any time, except during activation and deactivation. Issuanceof a LOAD command 762 by the host 102 will immediately terminate anyread or write burst that is currently taking place. The LOAD command 762causes the mode fields placed into the memory address lines by the host101 to be loaded into the mode register 304.

It will of course be understood that the present invention has beendescribed above purely by way of example and modifications of detail canbe made within the scope of the invention.

1. An integrated circuit active memory comprising: a memory interfacecoupled to receive externally generated commands and addresses throughan external port, the memory interface further being operable totransmit data to and from the external port, the memory interface beingoperable to select a processing element operation and to output memorycontrol signals and processor control signals responsive to theexternally generated commands, and to output processing element arrayaddresses and memory device addresses responsive to the externallygenerated addresses; an array of processing elements coupled to thememory interface, the processing elements in the array being selected bythe processing element array addresses, the selected set of processingelements being further operable to receive data from the memoryinterface and to transmit the data received from the memory interface toan internal data port responsive to the processor control signals, theselected set of processing elements further being operable to receivedata at the internal data port and to transmit the data received at theinternal data port to the memory interface responsive to the processorcontrol signals; a memory device coupled to the memory interface and tothe array of processing elements through the internal data port of theprocessing elements, the memory device being operable responsive to thememory control signals to receive data from the internal data port, andto store the data received from the internal data port at a location inthe memory device selected by the memory device addresses, the memorydevice further being operable responsive to the memory control signalsto receive data stored in the memory device at a location selected bythe memory device addresses and to transmit the data stored in thememory device to the internal data port; and a control logic unitincluded in the memory interface, the control logic unit being coupledto the external port to receive externally generated commands andaddresses, the control logic unit being coupled to the memory device toapply the memory control signals and memory device addresses to thememory device responsive to the externally generated commands andaddresses, the control logic unit further being coupled to the array ofprocessing elements to apply the processor control signals and theProcessing element array addresses to the set of processing elementsresponsive to the externally generated commands and addresses, thecontrol logic unit comprising: a state machine coupled to the externalport, the array of processing elements and the memory device, the statemachine being operable to generate the processor control signals appliedto the array of processing elements and the memory device controlsignals applied to the memory device responsive to the externallygenerated commands; an address register coupled to receive theexternally generated addresses from the external port and couple thememory addresses to an address output port, the address output portbeing coupled to the memory device to provide the memory deviceaddresses to the memory device; an address transform logic unit coupledto the address output port of the address register and to the array ofprocessing elements, the address transform logic being operable totransform the addresses received from the address register and to applythe transformed addresses to the array of processing elements as theprocessing element array addresses; and a data register included in thememory interface, the data register being coupled to the external portand the array of processing elements, the data register being operableto receive data from the external port and to couple the received datafrom the external port to the array of processing elements, the dataregister further being operable to receive data from the arrayprocessing elements and to couple the data received from the array ofprocessing elements to the external port.
 2. The integrated circuitactive memory device of claim 1 wherein the externally generatedcommands comprise standard dynamic random access memory commands.
 3. Theintegrated circuit active memory device of claim 2 wherein theexternally generated addresses comprise row and column addresses.
 4. Theintegrated circuit active memory device of claim 1 wherein the memorydevice comprises a dynamic random access memory device.
 5. Theintegrated circuit active memory device of claim 1, wherein theexternally generated commands include mode signals and furthercomprising a mode register coupled to the external port and to theaddress transform logic unit, the mode register being operable to storemode signals and to couple the stored mode signals to the addresstransform logic, and wherein the address transform logic unit isoperable to vary the manner in which the addresses received from theaddress register are transformed responsive to the mode signals receivedfrom the mode register.
 6. A computer system, comprising: a hostprocessor; a host/memory interface coupled to the host processor toreceive memory commands from the host processor including row addressstrobe (RAS), column address strobe (CAS), and write enable (WE)signals, to receive memory addresses from the host processor includingrow addresses and column addresses, and to receive data from andtransmit data to the host processor, the host/memory interface beingfurther configured to select a processing element mode of operationresponsive to the memory commands from the host processor; an array ofprocessing elements coupled to the host/memory interface, the processingelements in the array being selected by at least a portion of the memoryaddresses received by the host/memory interface, the selected processingelements being operable responsive to the memory commands to receivedata from and transmit data to the memory interface, and being operableresponsive to the memory commands to receive data from and transmit datato an internal data port; a memory device coupled to the host/memoryinterface and to the array of processing elements through the internaldata port of the array of processing elements, the memory device beingoperable responsive to the memory commands to store data received fromthe internal data port at a location selected by at least a portion ofthe memory addresses received by the host/memory interface, the memorydevice further being operable responsive to the memory commands toreceive data stored in the memory device at a location selected by atleast a portion of the memory addresses received by the host/memoryinterface and to transmit the data stored in the memory device to theinternal data port; and a control logic unit included in the host/memoryinterface, the control logic unit being coupled to the host processor toreceive the memory commands and addresses, the control logic unit beingcoupled to the memory device to apply memory device control signals andmemory device addresses to the memory device responsive to the memorycommands and memory addresses, respectively, received from the hostprocessor, the control logic unit further being coupled to the array ofprocessing elements to apply processing element array control signalsand processing element array addresses to the array of processingelements responsive to memory commands and memory addresses,respectively, received from the host processor, the control logic unitcomprising: a state machine coupled to the host processor, the array ofprocessing elements and the memory device, the state machine beingoperable to generate the processing element control signals applied tothe array of processing elements and the memory device control signalsapplied to the memory device responsive to the memory commands; anaddress register coupled to receive the memory addresses from the hostprocessor and couple the memory addresses to an address output port, theaddress output port being coupled to the memory device to provide thememory device addresses to the memory device; an address transform logicunit coupled to the address output port of the address register and tothe array of processing elements, the address transform logic unit beingoperable to transform the addresses received from the address registerand to apply the transformed addresses to the array of processingelements as the processing element array addresses; and a data registerincluded in the host/memory interface, the data register being coupledto the host processor and the array of processing elements, the dataregister being operable to receive write data from the host processorand to couple the write data to the array of processing elements, thedata register further being operable to receive read data from the arrayof processing elements and to couple the read data to the hostprocessor.
 7. The computer system of claim 6, further comprising amemory control unit coupled to the host/memory interface and to thememory device, the memory control unit being operable to generate memorycontrol signals responsive to the memory commands.
 8. The computersystem of claim 6 wherein the memory device comprises a dynamic randomaccess memory device.
 9. The computer system of claim 6 wherein thememory commands include mode signals, the computer system furthercomprising a mode register coupled to the host processor and to theaddress transform logic unit, the mode register being operable to storemode signals and to couple the stored mode signals to the addresstransform logic, and wherein the address transform logic unit isoperable to vary the manner in which the addresses received from theaddress register are transformed responsive to the mode signals receivedfrom the mode register.
 10. A method of transferring data between a hostprocessor and an active memory including a memory device and an array ofprocessing elements connected to the memory device, comprising:transferring commands from the host processor to the active memory, atleast some of the commands including an address; generating memorycontrol signals, and processor control signals responsive to thecommands; generating memory device addresses and processing elementarray addresses responsive to the addresses included in the commands;selectively altering a correspondency between the processing elementarray addresses and the addresses included in the commands and betweenthe memory device addresses and the addresses included in the commands;activating a page of data responsive to one of the memory deviceaddresses and control signals from the host by transferring a page ofdata identified by the memory device address from the memory device to aplurality of registers each associated with one of the processingelements of the array of processing elements; causing the processingelements to operate on data within the register of the plurality ofregisters associated therewith; outputting read data to the hostprocessor responsive to the control signals from the register of theplurality of registers associated with one of the processing elementscorresponding to the processing element array address; writing writedata from the host processor responsive to the control signals to theregister of the plurality of registers associated with one of theprocessing elements corresponding to the processing element arrayaddress; and deactivating the page responsive to the control signals bytransferring data from the plurality of registers to one of the memorydevice addresses within the memory device.
 11. The method of claim 10,wherein the page of data is a first page of data and wherein theplurality of registers is a first plurality, the method furthercomprising: activating a second page of data responsive to controlsignals from the host by transferring a second page of data identifiedby the control signals from the memory device to a second plurality ofregisters each associated with one of the processing elements of thearray of processing elements; wherein outputting read data to the hostprocessor further comprises outputting read data from one of the firstand second registers associated with the processing elementcorresponding to one of the processing element addresses according to apage identifier included in the control signals identifying one of thefirst and second pages; and wherein writing write data from the hostprocessor further comprises writing write data to one of the first andsecond registers associated with the processing element corresponding toone of the processing element addresses according to a page identifierincluded in the control signals identifying one of the first and secondpages.
 12. A method of transferring data to and from an active memorycomprising: applying commands and addresses to the active memory device;applying data to or receiving data from the active memory device;generating memory control signals and processor control signalsresponsive to the commands; generating memory device addresses andprocessing element array addresses responsive to the addresses appliedto the active memory device by selectively altering a correspondencybetween the processing element array addresses and the addresses appliedto the active memory device and between the memory device addresses andthe addresses applied to the active memory device; transferring writedata to or read data from a memory device responsive to the memorycontrol signals at a location corresponding to the generated memorydevice addresses; selecting a subset of processing elements in an arrayresponsive to the generated processing element array addresses;transferring the read data from the memory device to the selected subsetof processing elements responsive to the generated memory controlsignals and processor control signals; and transferring the write datafrom the selected subset of processing elements to the memory deviceresponsive to the generated memory control signals and processor controlsignals.
 13. The method of claim 12 wherein the act of applying commandsand addresses to the active memory device comprises applying standarddynamic random access memory commands to the active memory device. 14.The method of claim 12 wherein the act of applying commands andaddresses to the active memory device comprises applying row and columnaddresses to the active memory device.